home *** CD-ROM | disk | FTP | other *** search
- #include <exec/ports.h>
- #include <exec/memory.h>
- #include <clib/alib_protos.h>
- #include <proto/exec.h>
-
- struct MsgPort *CreatePort(STRPTR name,LONG pri)
- {
- struct MsgPort *port;
- UBYTE portsig;
-
- if ((BYTE)(portsig=AllocSignal(-1)) < 0)
- return NULL;
- if (!(port=AllocMem(sizeof(struct MsgPort),MEMF_CLEAR|MEMF_PUBLIC)))
- FreeSignal(portsig);
- else
- {
- port->mp_Node.ln_Type=NT_MSGPORT;
- port->mp_Node.ln_Pri=pri;
- port->mp_Node.ln_Name=name;
- /* done via AllocMem
- port->mp_Flags=PA_SIGNAL;
- */
- port->mp_SigBit=portsig;
- port->mp_SigTask=FindTask(NULL);
- if (port->mp_Node.ln_Name)
- AddPort(port);
- else
- NewList(&port->mp_MsgList);
- }
- return port;
- }
-
- void DeletePort(struct MsgPort *port)
- {
- int i;
-
- if (port->mp_Node.ln_Name != NULL)
- RemPort(port);
- i=-1;
- port->mp_Node.ln_Type=i;
- port->mp_MsgList.lh_Head=(struct Node *)i;
- FreeSignal(port->mp_SigBit);
- FreeMem(port,sizeof(struct MsgPort));
- }
-